package com.lekang.le.service;

import java.util.List;
import com.lekang.le.domain.WxUserBinding;

/**
 * 微信用户绑定老人Service接口
 * 
 * @author lekang
 * @date 2025-01-27
 */
public interface IWxUserBindingService 
{
    /**
     * 查询微信用户绑定老人
     * 
     * @param id 微信用户绑定老人主键
     * @return 微信用户绑定老人
     */
    public WxUserBinding selectWxUserBindingById(Long id);

    /**
     * 查询微信用户绑定老人列表
     * 
     * @param wxUserBinding 微信用户绑定老人
     * @return 微信用户绑定老人集合
     */
    public List<WxUserBinding> selectWxUserBindingList(WxUserBinding wxUserBinding);

    /**
     * 新增微信用户绑定老人
     * 
     * @param wxUserBinding 微信用户绑定老人
     * @return 结果
     */
    public int insertWxUserBinding(WxUserBinding wxUserBinding);

    /**
     * 修改微信用户绑定老人
     * 
     * @param wxUserBinding 微信用户绑定老人
     * @return 结果
     */
    public int updateWxUserBinding(WxUserBinding wxUserBinding);

    /**
     * 批量删除微信用户绑定老人
     * 
     * @param ids 需要删除的微信用户绑定老人主键集合
     * @return 结果
     */
    public int deleteWxUserBindingByIds(Long[] ids);

    /**
     * 删除微信用户绑定老人信息
     * 
     * @param id 微信用户绑定老人主键
     * @return 结果
     */
    public int deleteWxUserBindingById(Long id);

    /**
     * 绑定家人（老人）
     * 
     * @param wxUserId 微信用户ID
     * @param familyName 家人姓名
     * @param idCard 身份证号
     * @param relationship 称呼关系
     * @return 绑定结果
     */
    public String bindFamily(Long wxUserId, String familyName, String idCard, String relationship);

    /**
     * 根据微信用户ID查询绑定的老人列表
     * 
     * @param wxUserId 微信用户ID
     * @return 绑定关系列表
     */
    public List<WxUserBinding> selectByWxUserId(Long wxUserId);

    /**
     * 检查是否已绑定该老人
     * 
     * @param wxUserId 微信用户ID
     * @param elderlyId 老人ID
     * @return 是否已绑定
     */
    public boolean isAlreadyBound(Long wxUserId, Long elderlyId);

    /**
     * 解绑家人（小程序端使用）
     * 只删除wx_user_binding表的记录，不删除family_member表
     * 
     * @param bindingId 绑定关系ID（wx_user_binding表的主键）
     * @param wxUserId 微信用户ID（用于安全验证）
     * @return 结果
     */
    public int unbindFamily(Long bindingId, Long wxUserId);
}
